package cn.myblog.ainblog.conroller.commons;

import cn.myblog.ainblog.model.ArticleModel;
import cn.myblog.ainblog.model.CategoryModel;
import cn.myblog.ainblog.model.TagModel;
import cn.myblog.ainblog.service.ArticleService;
import cn.myblog.ainblog.service.CategoryService;
import cn.myblog.ainblog.service.TagService;
import cn.myblog.ainblog.vo.ArticleCategoryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Dovaior
 * @Description 处理前端公共部分的动态数据
 * @create 2021-04-22 15:04
 **/
@Controller
public class ReplaceController {
    @Autowired
    private CategoryService categoryService;
    @Autowired
    private TagService tagService;
    @Autowired
    private ArticleService articleService;

    /**
     * 查询全部分类显示前端
     * 用于：导航栏、页面底部、侧边栏
     * @return 返回携带查询结果的集合
     */
    @ResponseBody
    @GetMapping("/queryAllCategory")
    public List<CategoryModel> queryAllCategory(){
        return categoryService.queryAllCategory();
    }

    /**
     * 查询全部标签显示前端
     * 用于：页面底部
     * @return 返回携带查询结果的集合
     */
    @ResponseBody
    @GetMapping("/queryAllTag")
    public List<TagModel> queryAllTag(){
        return tagService.queryAllTag();
    }

    /**
     * 查询likeCount最高的前五个博文封面
     * 用于beforeFooter页面
     * @return 返回查询出来的信息
     */
    @ResponseBody
    @GetMapping("/queryArticleCoverLimit5")
    public List<ArticleModel> queryArticleCoverLimit5(){
        return articleService.queryArticleCoverLimit5();
    }

    /**
     * 查询最新的四条博文
     * @return 返回查询出来的信息
     */
    @ResponseBody
    @GetMapping("/queryArticleModelLimit4")
    public List<ArticleModel> queryArticleModelLimit4(){
        return articleService.queryArticleModelLimit4();
    }

    /**
     * 查询view最高的8条博文
     * @return 返回查询出来的信息
     */
    @ResponseBody
    @GetMapping("/queryArticleModelByViewLimit8")
    public List<ArticleModel> queryArticleModelByViewLimit8(){
        return articleService.queryArticleModelByViewLimit8();
    }

    /**
     * 搜索
     * @param keyWord 搜索的关键字
     */
    @PostMapping("/search")
    public String search(@RequestParam String keyWord,Model model){
        model.addAttribute("keyWord",keyWord);
        //根据title模糊查询
        List<ArticleCategoryVO> search = articleService.search(keyWord);
        if (search.size() != 0){
            model.addAttribute("flag","搜索到以下内容...");
            model.addAttribute("searchList",search);
        }else{
            model.addAttribute("flag","没有搜索到相关内容...");
        }
        return "search-page";
    }

}
